To explore Ephedra californica recovery following clipping. Year two in a long-term shrub removal experiment. Aboveground clipping. Panoche Hills Ecological Reserve. The manipulative research was done at site 1.1, the plateau within this reserve.
Removal done by A. Liczner, A. Filazzola, T. Noble, and M. Westphal. Loss of shrub effects on animals experiment separate from this survey initiated by A. Liczner and completed 2016. Eva Gruber surveyed for resprouting.
An examination of the evidence associated with pattern analyses between ephedra and other plant species at Panoche Hills Ecological Reserve.
#Data
#Primary
foundation <- read_csv("data/ephedra.foundation.csv")
foundation <- foundation %>% mutate(volume = ((length + width)/2)^3*3.14*(1/3))
foundation$year <- as.character(foundation$year)
foundation$site <- as.character(foundation$site)
foundation
## # A tibble: 450 × 11
## year region site rep microsite length width height abundance
## <chr> <chr> <chr> <int> <chr> <dbl> <dbl> <dbl> <int>
## 1 2016 Panoche 1.3 1 Shrub 3.77 2.38 1.59 263
## 2 2016 Panoche 1.3 1 Open NA NA NA 106
## 3 2016 Panoche 1.3 2 Shrub 3.22 2.38 1.84 276
## 4 2016 Panoche 1.3 2 Open NA NA NA 245
## 5 2016 Panoche 1.3 3 Shrub 1.95 1.30 0.59 217
## 6 2016 Panoche 1.3 3 Open NA NA NA 175
## 7 2016 Panoche 1.3 4 Shrub 4.21 4.39 1.71 283
## 8 2016 Panoche 1.3 4 Open NA NA NA 214
## 9 2016 Panoche 1.3 5 Shrub 3.41 3.17 1.55 241
## 10 2016 Panoche 1.3 5 Open NA NA NA 233
## # ... with 440 more rows, and 2 more variables: richness <int>,
## # volume <dbl>
#Effect sizes
foundation.rii <- read_csv("data/ephedra.foundation.rii.csv")
foundation.rii <- foundation.rii %>% mutate(volume = ((length + width)/2)^3*3.14*(1/3))
foundation.rii$year <- as.character(foundation.rii$year)
foundation.rii$site <- as.character(foundation.rii$site)
foundation.rii <- foundation.rii %>% filter(abundance < 0.8 & abundance > -0.7)
foundation.rii
## # A tibble: 223 × 10
## year region site rep microsite length width abundance richness
## <chr> <chr> <chr> <int> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 2013 Panoche 1.1 1 Shrub 4.5 4.8 0.22580645 0.0000000
## 2 2013 Panoche 1.1 2 Shrub 2.9 2.1 0.09803922 0.1111111
## 3 2013 Panoche 1.1 3 Shrub 1.2 1.2 0.04761905 0.0000000
## 4 2013 Panoche 1.1 4 Shrub 1.9 2.1 0.21739130 0.0000000
## 5 2013 Panoche 1.1 5 Shrub 3.4 4.4 0.16666667 -0.1428571
## 6 2013 Panoche 1.1 6 Shrub 4.1 2.1 0.39622641 -0.1428571
## 7 2013 Panoche 1.1 7 Shrub 2.4 2.3 0.21212121 0.1428571
## 8 2013 Panoche 1.1 8 Shrub 3.2 3.0 0.16666667 0.0000000
## 9 2013 Panoche 1.1 9 Shrub 4.1 3.8 0.35849057 -0.1428571
## 10 2013 Panoche 1.1 10 Shrub 3.2 3.1 0.31343284 -0.1428571
## # ... with 213 more rows, and 1 more variables: volume <dbl>
rii.2013 <- foundation.rii %>% filter(year == "2013")
rii.2014 <- foundation.rii %>% filter(year == "2014")
rii.2015 <- foundation.rii %>% filter(year == "2015")
rii.2016 <- foundation.rii %>% filter(year == "2016")
#Rii
#differences from open
ggplot(foundation.rii, aes(year, abundance)) + geom_boxplot(fill = "darkseagreen3") + ylab("Rii abundance")
ggplot(foundation.rii, aes(year,richness)) + geom_boxplot(fill = "darkseagreen3") + ylab("Rii richness")
#models for different between years
require(lmerTest)
m <- lmer(abundance~(1|year) + volume, data = foundation.rii)
#summary(m)
anova(m, test = "Chisq")
## Analysis of Variance Table of type III with Satterthwaite
## approximation for degrees of freedom
## Sum Sq Mean Sq NumDF DenDF F.value Pr(>F)
## volume 0.28695 0.28695 1 220.41 3.9366 0.04849 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
rand(m) #to get p-values for random effects
## Analysis of Random effects Table:
## Chi.sq Chi.DF p.value
## year 3.58 1 0.06 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m <- lmer(richness~(1|year) + volume, data = foundation.rii)
#summary(m)
anova(m, test = "Chisq")
## Analysis of Variance Table of type III with Satterthwaite
## approximation for degrees of freedom
## Sum Sq Mean Sq NumDF DenDF F.value Pr(>F)
## volume 0.18022 0.18022 1 218.58 2.987 0.08535 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
rand(m)
## Analysis of Random effects Table:
## Chi.sq Chi.DF p.value
## year 54.5 1 2e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#different from zero
#ab
t1 <- t.test(foundation.rii$abundance, mu = 0)
t1
##
## One Sample t-test
##
## data: foundation.rii$abundance
## t = 8.5519, df = 222, p-value = 1.988e-15
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 0.1215495 0.1943441
## sample estimates:
## mean of x
## 0.1579468
#richness
t2 <- t.test(foundation.rii$richness, mu = 0)
t2
##
## One Sample t-test
##
## data: foundation.rii$richness
## t = -6.1717, df = 222, p-value = 3.171e-09
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.15553974 -0.08024948
## sample estimates:
## mean of x
## -0.1178946
# ab each year
t1 <- t.test(rii.2013$abundance, mu = 0)
t1
##
## One Sample t-test
##
## data: rii.2013$abundance
## t = 8.6815, df = 43, p-value = 5.253e-11
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 0.1640679 0.2633583
## sample estimates:
## mean of x
## 0.2137131
t1 <- t.test(rii.2014$abundance, mu = 0)
t1
##
## One Sample t-test
##
## data: rii.2014$abundance
## t = 4.4799, df = 44, p-value = 5.256e-05
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 0.1292521 0.3406396
## sample estimates:
## mean of x
## 0.2349459
t1 <- t.test(rii.2015$abundance, mu = 0)
t1
##
## One Sample t-test
##
## data: rii.2015$abundance
## t = 2.9259, df = 44, p-value = 0.005416
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 0.03062158 0.16618316
## sample estimates:
## mean of x
## 0.09840237
t1 <- t.test(rii.2016$abundance, mu = 0)
t1
##
## One Sample t-test
##
## data: rii.2016$abundance
## t = 3.9614, df = 88, p-value = 0.000151
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 0.06057307 0.18252997
## sample estimates:
## mean of x
## 0.1215515
#richness by year
t2 <- t.test(rii.2013$richness, mu = 0)
t2
##
## One Sample t-test
##
## data: rii.2013$richness
## t = 0.075117, df = 43, p-value = 0.9405
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.03475463 0.03744386
## sample estimates:
## mean of x
## 0.001344615
t2 <- t.test(rii.2014$richness, mu = 0)
t2
##
## One Sample t-test
##
## data: rii.2014$richness
## t = 2.668, df = 44, p-value = 0.01064
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 0.02465005 0.17688174
## sample estimates:
## mean of x
## 0.1007659
t2 <- t.test(rii.2015$richness, mu = 0)
t2
##
## One Sample t-test
##
## data: rii.2015$richness
## t = -4.6118, df = 44, p-value = 3.435e-05
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.24208568 -0.09484554
## sample estimates:
## mean of x
## -0.1684656
t2 <- t.test(rii.2016$richness, mu = 0)
t2
##
## One Sample t-test
##
## data: rii.2016$richness
## t = -8.6023, df = 88, p-value = 2.702e-13
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -0.3223218 -0.2013451
## sample estimates:
## mean of x
## -0.2618334
#volume####
ggplot(foundation.rii, aes(volume, abundance)) + geom_point(aes(color = year)) + geom_smooth(method = "lm") + xlab("volume (m^3)")
ggplot(foundation.rii, aes(volume, abundance, color = year)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + xlab("volume (m^3)")
ggplot(foundation.rii, aes(volume, richness)) + geom_point(aes(color=year)) + geom_smooth(method = "lm") + xlab("volume (m^3)")
ggplot(foundation.rii, aes(volume, richness, color = year)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + xlab("volume (m^3)")
#posthoc tests from main models
m <- lm(abundance~volume, data = foundation.rii)
m
##
## Call:
## lm(formula = abundance ~ volume, data = foundation.rii)
##
## Coefficients:
## (Intercept) volume
## 0.1889542 -0.0009065
summary(m)
##
## Call:
## lm(formula = abundance ~ volume, data = foundation.rii)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.80630 -0.16057 0.01776 0.18475 0.64730
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.1889542 0.0257240 7.345 3.91e-12 ***
## volume -0.0009065 0.0005259 -1.724 0.0862 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2746 on 221 degrees of freedom
## Multiple R-squared: 0.01327, Adjusted R-squared: 0.0088
## F-statistic: 2.971 on 1 and 221 DF, p-value: 0.08617
m <- lm(richness~volume, data = foundation.rii)
m
##
## Call:
## lm(formula = richness ~ volume, data = foundation.rii)
##
## Coefficients:
## (Intercept) volume
## -0.1515101 0.0009828
summary(m)
##
## Call:
## lm(formula = richness ~ volume, data = foundation.rii)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.54197 -0.20375 0.00403 0.18907 0.79721
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.1515101 0.0265882 -5.698 3.84e-08 ***
## volume 0.0009828 0.0005436 1.808 0.072 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2838 on 221 degrees of freedom
## Multiple R-squared: 0.01457, Adjusted R-squared: 0.01011
## F-statistic: 3.268 on 1 and 221 DF, p-value: 0.07198
#test 2016 only
m <- lm(abundance~volume, data = rii.2016)
m
##
## Call:
## lm(formula = abundance ~ volume, data = rii.2016)
##
## Coefficients:
## (Intercept) volume
## 0.217302 -0.002641
summary(m)
##
## Call:
## lm(formula = abundance ~ volume, data = rii.2016)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.78160 -0.12944 0.00135 0.23578 0.46049
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.217302 0.040966 5.304 8.49e-07 ***
## volume -0.002641 0.000796 -3.318 0.00133 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2743 on 87 degrees of freedom
## Multiple R-squared: 0.1123, Adjusted R-squared: 0.1021
## F-statistic: 11.01 on 1 and 87 DF, p-value: 0.001325
m <- lm(richness~volume, data = rii.2016)
m
##
## Call:
## lm(formula = richness ~ volume, data = rii.2016)
##
## Coefficients:
## (Intercept) volume
## -0.344154 0.002271
summary(m)
##
## Call:
## lm(formula = richness ~ volume, data = rii.2016)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.40545 -0.26604 0.03897 0.21848 0.59324
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.344154 0.041271 -8.339 1.01e-12 ***
## volume 0.002271 0.000802 2.831 0.00576 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2763 on 87 degrees of freedom
## Multiple R-squared: 0.08437, Adjusted R-squared: 0.07385
## F-statistic: 8.017 on 1 and 87 DF, p-value: 0.005756
#Primary data
#ggplot(foundation, aes(microsite, abundance)) + geom_boxplot() + facet_grid(~year)
#ggplot(foundation, aes(microsite, richness)) + geom_boxplot() + facet_grid(~year)
#ggplot(foundation, aes(volume, abundance, color = year)) + geom_point() + geom_smooth(method = "lm")
#ggplot(foundation, aes(volume, richness, color = year)) + geom_point() + geom_smooth(method = "lm")
#wrangle primary data
data <- read_csv("data/EH.recovery.2016.csv")
data <- data %>% mutate(volume = ((length + width)/2)^3*3.14*(1/3)) %>% arrange(desc(resprout))
data
## # A tibble: 40 × 9
## date census ID length width height resprout
## <chr> <chr> <int> <dbl> <dbl> <dbl> <int>
## 1 nov.2016 post.2 182 1.20 1.40 0.91 15
## 2 nov.2016 post.2 217 1.15 1.25 0.85 15
## 3 nov.2016 post.2 303 3.50 2.80 0.60 13
## 4 nov.2016 post.2 614 1.70 1.15 0.43 12
## 5 nov.2016 post.2 146 3.40 2.15 0.70 10
## 6 nov.2016 post.2 621 1.85 0.90 0.65 10
## 7 nov.2016 post.2 651 2.55 2.40 1.00 10
## 8 nov.2016 post.2 137 1.90 3.30 0.60 9
## 9 nov.2016 post.2 245 3.20 2.50 0.80 8
## 10 nov.2016 post.2 271 2.80 2.55 0.71 8
## # ... with 30 more rows, and 2 more variables: observations <chr>,
## # volume <dbl>
#stem data####
wet.weights <-read.csv("data/wet.weights.csv")
total.weight <- wet.weights %>% select(ID, total.weight)
stems <- read_csv("data/stem.analyses.csv")
#current volume used####
nov.2016 <- data %>% filter(date == "nov.2016") #only resurvey
nov.2016 <- left_join(nov.2016, total.weight, by = "ID")
#setup volume####
setup <- data %>% filter(date == "april.2013") %>%
select(ID, volume) %>% rename(setup.vol = volume)
merged.data <- left_join(nov.2016, setup)
#Recovery####
#Viz
#ggplot(nov.2016, aes(resprout, weight= volume)) +
#geom_histogram(binwidth = 2, fill = "darkseagreen3") +
#xlab("number of shoots resprouted") +
#ylab("relative weighted frequency by current volume") +
#xlim(0,15)
ggplot(nov.2016, aes(resprout, weight= volume)) +
geom_density(kernel = "gaussian", fill = "darkseagreen3") +
xlab("number of shoots resprouted") +
ylab("relative weighted frequency by current volume") +
xlim(0,15)
ggplot(nov.2016, aes(height, weight= volume)) +
geom_density(kernel = "gaussian", fill = "darkseagreen3") +
xlab("height (m)") +
ylab("relative weighted frequency by current volume")
#ggplot(nov.2016, aes(total.weight, weight= volume)) +
#geom_histogram(binwidth = 700, fill = "darkseagreen3") +
#xlab("total biomass (g)") +
#ylab("relative weighted frequency by current volume")
ggplot(nov.2016, aes(total.weight, weight= volume)) +
geom_density(kernel = "gaussian", fill = "darkseagreen3") +
xlab("total biomass (g)") +
ylab("relative weighted frequency by current volume") +
xlim(0,5000)
ggplot(nov.2016, aes(volume, resprout)) +
geom_point(color = "darkseagreen3") +
xlab("current shrub volume") +
ylab("number of resprouted shoots") +
geom_smooth(method = lm, color = "darkseagreen3")
ggplot(nov.2016, aes(volume, total.weight)) +
geom_point(color = "darkseagreen3") +
xlab("current shrub volume") +
ylab("total wet weight (g)") +
geom_smooth(method = lm, color ="darkseagreen3")
#number of resprouted shoots predict wet weight
ggplot(nov.2016, aes(resprout, total.weight)) +
geom_point(color = "dodgerblue") +
xlab("resprouted shoot numbers") +
ylab("total wet weight") +
geom_smooth(method = lm)
#quick test
fit <- lm(total.weight ~ resprout, data= nov.2016)
summary(fit)
##
## Call:
## lm(formula = total.weight ~ resprout, data = nov.2016)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2127.08 -615.68 -99.73 1120.22 2763.02
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 594.48 738.92 0.805 0.4337
## resprout 189.05 95.54 1.979 0.0665 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1390 on 15 degrees of freedom
## (3 observations deleted due to missingness)
## Multiple R-squared: 0.207, Adjusted R-squared: 0.1541
## F-statistic: 3.916 on 1 and 15 DF, p-value: 0.06649
#simple main model
m1 <- glm(resprout ~ volume, data = nov.2016)
summary(m1)
##
## Call:
## glm(formula = resprout ~ volume, data = nov.2016)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -5.7162 -2.4932 -0.8268 1.5373 8.9689
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.71620 1.29882 4.401 0.000345 ***
## volume 0.17413 0.09437 1.845 0.081523 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 18.05899)
##
## Null deviance: 386.55 on 19 degrees of freedom
## Residual deviance: 325.06 on 18 degrees of freedom
## AIC: 118.52
##
## Number of Fisher Scoring iterations: 2
anova(m1, test = "Chisq")
## Analysis of Deviance Table
##
## Model: gaussian, link: identity
##
## Response: resprout
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 19 386.55
## volume 1 61.488 18 325.06 0.06501 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
m1.1 <- glm(total.weight ~ volume, data = nov.2016)
summary(m1.1)
##
## Call:
## glm(formula = total.weight ~ volume, data = nov.2016)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2045.56 -437.74 -66.36 467.51 2879.01
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 887.75 414.97 2.139 0.04926 *
## volume 93.35 27.83 3.354 0.00435 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 1392680)
##
## Null deviance: 36559960 on 16 degrees of freedom
## Residual deviance: 20890205 on 15 degrees of freedom
## (3 observations deleted due to missingness)
## AIC: 292.61
##
## Number of Fisher Scoring iterations: 2
anova(m1.1, test = "Chisq")
## Analysis of Deviance Table
##
## Model: gaussian, link: identity
##
## Response: total.weight
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 16 36559960
## volume 1 15669755 15 20890205 0.0007956 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#repeat all above worflow code
ggplot(merged.data, aes(resprout, weight= setup.vol)) +
geom_histogram(binwidth = 2, fill = "darkseagreen3") +
xlab("number of shoots resprouted") +
ylab("relative weighted frequency by setup volume")
ggplot(merged.data, aes(total.weight, weight= setup.vol)) +
geom_histogram(binwidth = 1000, fill = "darkseagreen3") +
xlab("total wet weight regrowth") +
ylab("relative weighted frequency by setup volume")
ggplot(merged.data, aes(ID, resprout)) +
geom_point(aes(size = setup.vol), color = "darkseagreen3")
merged.data <- merged.data %>% filter(resprout < 15) #filter out my post hoc classifications
ggplot(merged.data, aes(setup.vol, resprout)) +
geom_point(color = "dodgerblue") +
xlab("setup shrub volume") +
ylab("number of resprouted shoots") +
geom_smooth(method = lm)
ggplot(merged.data, aes(setup.vol, total.weight)) +
geom_point(color = "dodgerblue") +
xlab("setup shrub volume") +
ylab("total wet weight regrowth") +
geom_smooth(method = lm)
#simple model
m2 <- glm(resprout ~ setup.vol, data = merged.data)
summary(m2)
##
## Call:
## glm(formula = resprout ~ setup.vol, data = merged.data)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -4.989 -2.966 -1.361 2.726 6.840
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.78551 1.40967 3.395 0.0037 **
## setup.vol 0.05216 0.03352 1.556 0.1392
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 13.92356)
##
## Null deviance: 256.50 on 17 degrees of freedom
## Residual deviance: 222.78 on 16 degrees of freedom
## AIC: 102.37
##
## Number of Fisher Scoring iterations: 2
anova(m2, test = "Chisq")
## Analysis of Deviance Table
##
## Model: gaussian, link: identity
##
## Response: resprout
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 17 256.50
## setup.vol 1 33.723 16 222.78 0.1196
m2.1 <- glm(total.weight ~ setup.vol, data = merged.data)
summary(m2)
##
## Call:
## glm(formula = resprout ~ setup.vol, data = merged.data)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -4.989 -2.966 -1.361 2.726 6.840
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.78551 1.40967 3.395 0.0037 **
## setup.vol 0.05216 0.03352 1.556 0.1392
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 13.92356)
##
## Null deviance: 256.50 on 17 degrees of freedom
## Residual deviance: 222.78 on 16 degrees of freedom
## AIC: 102.37
##
## Number of Fisher Scoring iterations: 2
anova(m2.1, test = "Chisq")
## Analysis of Deviance Table
##
## Model: gaussian, link: identity
##
## Response: total.weight
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 16 36559960
## setup.vol 1 698277 15 35861683 0.5889
#Proportion regrowth by initial shrub size
merged.data <-merged.data %>% mutate(relative.regrowth = resprout/setup.vol) #calculate proportion reprouting by initial size
merged.data <-merged.data %>% mutate(relative.biomass.regrowth = total.weight/setup.vol) #calculate proportion reprouting by initial size
ggplot(merged.data, aes(volume, relative.regrowth)) + geom_point(color = "dodgerblue") + xlab("current shrub volume") +
geom_smooth(method = lm) +
ylab("regrowth weighted by initial shrub size") +
scale_y_continuous(breaks=c(-2,-1,0,1,2))
ggplot(merged.data, aes(volume, relative.biomass.regrowth)) + geom_point(color = "darkseagreen3") + xlab("current shrub volume") +
geom_smooth(method = lm) +
ylab("biomass regrowth weighted by initial shrub size") +
scale_y_continuous(breaks=c(-2,-1,0,1,2))
m3 <- lm(merged.data$relative.regrowth ~ merged.data$volume)
summary(m3) # slope is not significantly different from 0 so no difference in proportionate regrowth
##
## Call:
## lm(formula = merged.data$relative.regrowth ~ merged.data$volume)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.39398 -0.29158 -0.16772 -0.06767 1.91933
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.393979 0.206191 1.911 0.0741 .
## merged.data$volume 0.001213 0.014228 0.085 0.9331
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6216 on 16 degrees of freedom
## Multiple R-squared: 0.0004539, Adjusted R-squared: -0.06202
## F-statistic: 0.007266 on 1 and 16 DF, p-value: 0.9331
anova(m3, test = "Chisq")
## Analysis of Variance Table
##
## Response: merged.data$relative.regrowth
## Df Sum Sq Mean Sq F value Pr(>F)
## merged.data$volume 1 0.0028 0.00281 0.0073 0.9331
## Residuals 16 6.1818 0.38636
m3.1 <- lm(merged.data$relative.biomass.regrowth ~ merged.data$volume)
summary(m3.1) # slope is not significantly different from 0 so no difference in proportionate regrowth
##
## Call:
## lm(formula = merged.data$relative.biomass.regrowth ~ merged.data$volume)
##
## Residuals:
## Min 1Q Median 3Q Max
## -153.97 -109.28 -97.07 -26.06 1070.12
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 122.584 103.349 1.186 0.254
## merged.data$volume 1.980 6.931 0.286 0.779
##
## Residual standard error: 293.9 on 15 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.00541, Adjusted R-squared: -0.0609
## F-statistic: 0.0816 on 1 and 15 DF, p-value: 0.779
anova(m3.1, test = "Chisq")
## Analysis of Variance Table
##
## Response: merged.data$relative.biomass.regrowth
## Df Sum Sq Mean Sq F value Pr(>F)
## merged.data$volume 1 7049 7049 0.0816 0.779
## Residuals 15 1295773 86385
merged.data <- left_join(merged.data, stems, by = "ID")
#Mass EDA####
#Did wet predict dry weights?
ggplot(merged.data, aes(total.weight, total.dry.weight.g)) +
geom_point(color = "dodgerblue") +
xlab("total wet weight") +
ylab("total dry weight") +
geom_smooth(method = lm)
fit <- lm(total.dry.weight.g ~ total.weight, data= merged.data)
summary(fit)
##
## Call:
## lm(formula = total.dry.weight.g ~ total.weight, data = merged.data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -670.37 -23.23 37.01 37.01 2341.93
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -171.98974 49.50471 -3.474 0.000573 ***
## total.weight 0.95274 0.01173 81.232 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 438.2 on 370 degrees of freedom
## (172 observations deleted due to missingness)
## Multiple R-squared: 0.9469, Adjusted R-squared: 0.9468
## F-statistic: 6599 on 1 and 370 DF, p-value: < 2.2e-16
#Volume by dry weight
ggplot(merged.data, aes(volume, total.dry.weight.g)) +
geom_point(color = "dodgerblue") +
xlab("current shrub volume") +
ylab("total dry weight") +
geom_smooth(method = lm)
fit <- lm(total.dry.weight.g ~ volume, data= merged.data)
summary(fit)
##
## Call:
## lm(formula = total.dry.weight.g ~ volume, data = merged.data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4458 -1068 1070 1070 1070
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1080.63 187.51 5.763 1.74e-08 ***
## volume 171.02 12.49 13.694 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1549 on 370 degrees of freedom
## (172 observations deleted due to missingness)
## Multiple R-squared: 0.3363, Adjusted R-squared: 0.3346
## F-statistic: 187.5 on 1 and 370 DF, p-value: < 2.2e-16
#number of resprouted shoots predict dry weight
ggplot(merged.data, aes(resprout, total.dry.weight.g)) +
geom_point(color = "dodgerblue") +
xlab("resprouted shoot numbers") +
ylab("total dry weight") +
geom_smooth(method = lm)
fit <- lm(total.dry.weight.g ~ resprout, data= merged.data)
summary(fit)
##
## Call:
## lm(formula = total.dry.weight.g ~ resprout, data = merged.data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4455.8 -465.4 836.8 836.8 836.8
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -639.78 262.31 -2.439 0.0152 *
## resprout 466.79 29.02 16.087 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1459 on 370 degrees of freedom
## (172 observations deleted due to missingness)
## Multiple R-squared: 0.4116, Adjusted R-squared: 0.41
## F-statistic: 258.8 on 1 and 370 DF, p-value: < 2.2e-16
merged.data <-merged.data %>% mutate(relative.dry.biomass.regrowth = total.weight/setup.vol) #calculate proportion reprouting by initial size
library(outliers)
chisq.out.test(merged.data$relative.dry.biomass.regrowth)
##
## chi-squared test for outlier
##
## data: merged.data$relative.dry.biomass.regrowth
## X-squared = 1.4361, p-value = 0.2308
## alternative hypothesis: highest value 1224.12420382166 is an outlier
merged.data <- merged.data %>% filter(relative.dry.biomass.regrowth < 1224)
ggplot(merged.data, aes(volume, relative.dry.biomass.regrowth)) + geom_point(color = "dodgerblue") + xlab("current shrub volume") +
geom_smooth(method = lm) +
ylab("dry biomass regrowth by initial shrub size") +
scale_y_continuous(breaks=c(-2,-1,0,1,2))
m <- lm(merged.data$relative.dry.biomass.regrowth ~ merged.data$volume)
summary(m) # slope is not significantly different from 0 so no difference in proportionate regrowth
##
## Call:
## lm(formula = merged.data$relative.dry.biomass.regrowth ~ merged.data$volume)
##
## Residuals:
## Min 1Q Median 3Q Max
## -42.639 -26.493 -26.493 -1.809 164.079
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 41.0911 3.5949 11.430 <2e-16 ***
## merged.data$volume 0.6456 0.3770 1.712 0.0878 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 53.25 on 319 degrees of freedom
## Multiple R-squared: 0.009109, Adjusted R-squared: 0.006003
## F-statistic: 2.933 on 1 and 319 DF, p-value: 0.08778
anova(m, test = "Chisq")
## Analysis of Variance Table
##
## Response: merged.data$relative.dry.biomass.regrowth
## Df Sum Sq Mean Sq F value Pr(>F)
## merged.data$volume 1 8317 8317.1 2.9326 0.08778 .
## Residuals 319 904714 2836.1
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Morphometrics analyses####
ggplot(merged.data, aes(total.singletons, total.complex.green.shoots)) + geom_point(color = "dodgerblue") +
geom_smooth(method = lm)
ggplot(merged.data, aes(resprout, total.singletons)) +
geom_point(color = "dodgerblue") +
geom_smooth(method = lm)
ggplot(merged.data, aes(volume, total.singletons)) +
geom_point(color = "dodgerblue") +
geom_smooth(method = lm)
Primary trends.
Counting resprouted shoots is an effective and relatively accurate mechanism to estimate regrowth in Ephedra californica following damage. Trends in regrowth similar between shoot number and total wet weight, and shoot number significantly and effectively predicts the mass of biomass regrowth per shrub.
Larger shrubs have more resprouted shoots and regrowth of biomass; however, the regrowth is not proportionately greater for increasingly larger shrubs. THIS is an important finding. Larger shrubs do NOT have a greater capacity to proportionally recover from damage relative to smaller shrubs.
Ephedra californica can recover to some extent following damage. However, we do not know how these recovery patterns compare to the background growth patterns of undamaged shrubs nor whether subsequent or repeated damages to this species reduces its potential capacity to recover.
Methodologically, wet weight is an effective measure of biomass produced (i.e. predicts dry weight effectively with little variation).
Future directions.
Remeasure recovery in 1 and 2 years to this new clipping event.
Develop a means to estimate growth rate in undamaged shrubs for the next 1-2years.